www.gusucode.com > VC++ 信息加密聊天源代码-源码程序 > VC++ 信息加密聊天源代码-源码程序\code\SecChat\ReadMe.txt

                                  密聊源程序

	密聊是文件密使的一部份,为了保护通讯的安全,为此文件密使新添加了即时安全通讯工具密聊,
"密聊"采用 2048bit 的 RSA 数据加密算法对数据进行加密和数字签名。在此公开源程序并希望
对信息安全有兴趣的朋友进行改进,或提供宝贵的意见。希望密聊能成为一个稳定、安全、公开
的通讯工具。

程序内容:
1. 通讯程序用的是MFC Socket,监听套接字类CListenSocket,服务器类CServiceSocket,
客户端类CClientSocket。CSecretChatDlg::SendData发送消息包。
2. public_key和private_key是对实现RSA功能的封装类:
   private_key::create()是创建私有密钥和公开密钥的函数
   public_key::encrypt(vlong& plain)对一个小于m的大整数plain进行加密
   private_key::decrypt(vlong &cipher)对一个小于m的大整数cipher进行解密
   其他的参数是分别对消息块MessageDollop和消息包MessagePackage进行处理的封装
   public_key::vlong_to_PK(PK &pk)是将公开密钥转化成PK结构,这样才能保持下来
   public_key::PK_to_vlong(PK pk)把PK结构的公钥转化到vlong类型的公钥
   private_key::vlong_to_SK(SK &sk)是将私有密钥转化成SK结构,这样才能保持下来
   private_key::SK_to_vlong(SK sk)把SK结构的私钥转化到vlong类型的私钥
3. MessageDollop和MessagePackage结构是分别是消息块和消息包,他们是重要的数据处理对象。
   它们的定义有详细的说明;PK和SK是为了将公开密钥和私有密钥变成可以存储的结构体;
   SecretKey是私钥或公钥文件结构;__DWORD128类对128bit信息进行处理

处理流程:
1. 连接成功后,就会安装用户的私有密钥和好友的公开密钥
2. 加密消息
用TextToMessagePackage函数将要加密的文本消息转换成消息包,
用用户私有密钥对消息包进行签名m_private_key_send.decrypt,
之后用对方公开密钥对消息包再进行加密m_public_key_send.encrypt,
他们在while循环中,是为了使得要加密的数据必须要小于m;
3. 解密消息
用接收方的私有密钥解密m_private_key_receive.decrypt	
用发送方的公开密钥解密签名m_public_key_receive.encrypt
用MessagePackageToText函数将要消息包转换成可读的文本消息



────────────────
主页:http://www.wjmshome.com
BBS: http://wjmshome.ok100.net